package com.badibadi.mytools;

import java.util.Timer;
import java.util.TimerTask;

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

public class EditTextTools {

	/**
	 * 弹出键盘
	 * 
	 * @param editText
	 */
	public static void ConsultingEvaluation(EditText editText) {
		InputMethodManager inputManager = (InputMethodManager) editText
				.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
		editText.setFocusable(true);
		editText.setFocusableInTouchMode(true);
		editText.requestFocus();

		inputManager.showSoftInput(editText, 0);
		// InputMethodManager imm = (InputMethodManager)
		// context.getSystemService(context.INPUT_METHOD_SERVICE);
		// imm.toggleSoftInput(0, InputMethodManager.RESULT_SHOWN);
	}

	/**
	 * 关闭或者弹出键盘(只有这个有效果)
	 * 
	 * @param editText
	 */
	public static void CloseOrConsultingEvaluation(EditText editText) {
		// editText.setFocusable(true);
		// editText.setFocusableInTouchMode(true);
		// editText.requestFocus();
		InputMethodManager imm = (InputMethodManager) editText.getContext()
				.getSystemService(Context.INPUT_METHOD_SERVICE);
		if (imm.isActive()) {
			// 如果开启
			imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,
					InputMethodManager.HIDE_NOT_ALWAYS);
			// 关闭软键盘，开启方法相同，这个方法是切换开启与关闭状态的
		}

	}

	/**
	 * 监听edittext的弹出与关闭
	 * 
	 * @param activityRootView
	 *            主要的视图
	 * @param handler
	 *            一个handler
	 * @param open
	 *            打开发送的handler
	 * @param close
	 *            关闭发送的handler
	 */
	public void voi(final LinearLayout activityRootView,
			final android.os.Handler handler, final int open, final int close) {
		final boolean KeyBoardIsOpen;// 键盘是否打开
		activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(
				new OnGlobalLayoutListener() {
					private int preHeight = 0;

					@Override
					public void onGlobalLayout() {
						// 这里获取的activityRootView.getRootView().getHeight()
						// 是根视图，根视图不会变化
//						   
//								" activityRootView.getRootView().getHeight()-->"
//										+ activityRootView.getRootView()
//												.getHeight());
						// 这里获取的activityRootView.getHeight()
						// 是View的高,高是根据键盘压缩会发生变化
//						   
//								+ activityRootView.getHeight());
						int heightDiff = activityRootView.getRootView()
								.getHeight() - activityRootView.getHeight();

//						   ("height differ = " + heightDiff);
						// 在数据相同时，减少发送重复消息。因为实际上在输入法出现时会多次调用这个onGlobalLayout方法。
						if (preHeight == heightDiff) {
							return;
						}
						preHeight = heightDiff;
//						   
						// 这里的200可能会根据不同的手机来适应不同的
						if (heightDiff > 200) {
							//    ("input method shown!");
							// Toast.makeText(getApplicationContext(), "键盘已经打开",
							// Toast.LENGTH_SHORT).show();
							// KeyBoardIsOpen=true;
							handler.sendEmptyMessage(open);
						} else {
							// Toast.makeText(getApplicationContext(), "键盘已经关闭",
							// Toast.LENGTH_SHORT).show();
							// KeyBoardIsOpen=false;
							handler.sendEmptyMessage(close);
						}
					}

				});
	}

	/**
	 * 让editText获取焦点
	 * 
	 * @param et
	 */
	public static void getFocusable(EditText et) {
		if (et != null) {
			et.setFocusable(true);
			et.setFocusableInTouchMode(true);
			et.requestFocus();
			et.requestFocusFromTouch();
		}

	}

	/**
	 * 延时弹出键盘
	 * 
	 * @param editText
	 */
	public static void ConsultingEvaluation(final EditText editText,
			final int time) {
		Timer timer = new Timer();
		timer.schedule(new TimerTask() {
			public void run() {
				InputMethodManager inputManager = (InputMethodManager) editText
						.getContext().getSystemService(
								Context.INPUT_METHOD_SERVICE);
				inputManager.showSoftInput(editText, time);
			}

		}, time);
	}
}
